Elastic Beanstalk の起動設定を起動テンプレートへ移行する方法

Elastic Beanstalk の起動設定を起動テンプレートへ移行する方法

Clock Icon2024.08.16

困っていた内容

Elastic Beanstalk 経由で作成された起動設定を起動テンプレートに移行したいです。
どのようにすれば Elastic Beanstalk が起動テンプレートを使用するようになりますか?

どう対応すればいいの?

Elastic Beanstalk 管理下の起動設定を起動テンプレートへ移行させたい場合は、Elastic Beanstalk 環境から設定変更する必要があります [1]

環境内にあるリソースを変更する場合は、必ず Elastic Beanstalk を使用してください。他のサービスのコンソール、CLI コマンド、または SDK を使用してリソースを変更した場合、Elastic Beanstalk ではこれらのリソースの状態を正確にモニタリングできなくなります。また、設定を保存することも、環境を確実に再現することもできなくなります。帯域外で変更を加えた場合は、環境を更新または終了する際も問題が発生することがあります。

どうやって Elastic Beanstalk 環境から設定変更するの?

Elastic Beanstalk では起動テンプレートに依存する機能を設定している場合、Elastic Beanstalk 環境更新時に 起動設定 から 起動テンプレート に切り替わる動作となっています [2]

Today we released support for Spot Instances, and enabling Spot Instances requires using Amazon EC2 launch templates. In the future, additional features might depend on Amazon EC2 launch templates. When you enable such a feature during environment creation or updates, Elastic Beanstalk attempts to configure your environment to use Amazon EC2 launch templates (if the environment isn't using them already). In this case, if your user policy lacks the necessary permissions, environment creation or updates might fail. Therefore, we recommend that you use our managed user policy or add the required permissions to your custom policies. For details about the required permissions, see Creating a Custom User Policy in the AWS Elastic Beanstalk Developer Guide.

実際にどの機能が起動テンプレートに依存する機能や設定なのかについてはドキュメントに明記されていませんが、少なくとも以下の設定項目を指定した場合は起動テンプレートが使用されました。

  • IMDSv1 を無効化する [3]
  • スポットインスタンスリクエストを有効にする [4]
  • 起動設定でサポートされていないインスタンスタイプを指定する

一番手軽な方法は IMDSv1 の無効化だと思いますので、Elastic Beanstalk の環境の設定で IMDSv1 を無効化する(DisableIMDSv1 の設定を true にする)ように指定して環境更新を実施してください。

IMDSv1 を無効化しているのに起動設定のまま?

Elastic Beanstalk 環境を作成する方法によっては、IMDSv1 の無効化がデフォルトで設定されますので、IMDSv1 が無効化されているのに Elastic Beanstalk が起動設定を使用し続けているケースもあります。
私の検証環境で挙動を確認したところ、例えば、マネジメントコンソールから Elastic Beanstalk 環境を作成する場合はデフォルトで IMDSv1 の無効化が設定されており、そのまま環境を作成すると起動設定が作成されました。

このような場合、明示的に IMDSv1 を無効化するように指定することで問題を解決できます。

例えば、.ebextensions 配下の設定ファイルで、aws:autoscaling:launchconfiguration 名前空間の設定オプションを以下のように指定します。

option_settings:
  - namespace:  aws:autoscaling:launchconfiguration
    option_name:  DisableIMDSv1
    value:  true

上記のように明示的に指定することで、「IMDSv1 を無効化しているのに起動設定のまま」のような場合でも、Elastic Beanstalk が起動テンプレートを使用するようになります。

参考情報

脚注
  1. 環境を管理する - AWS Elastic Beanstalk ↩︎

  2. Release: Elastic Beanstalk starts using Amazon EC2 launch templates on November 25, 2019 - AWS Elastic Beanstalk ↩︎

  3. 環境のインスタンスでのインスタンスメタデータサービスの設定 - AWS Elastic Beanstalk ↩︎

  4. Elastic Beanstalk 環境用の Auto Scaling グループ - AWS Elastic Beanstalk ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.